package com.bjpowernode.money.service;

import com.bjpowernode.money.model.BidInfo;
import com.bjpowernode.money.model.PageModel;

import java.util.List;

/**
 * @author ZHAOZHENYU
 * @since 2022/10/14
 */
public interface BidInfoService {

    /**
     * 1、首页：累计成交额
     * @return
     */
    Double queryBidMoneySum();

    /**
     * 2、产品详情页：根据存款产品id查 所有投标信息【其中含有用户信息】
     * @return
     * @param loanId
     */
    List<BidInfo> queryBidInfoById(Integer loanId);

    /**
     * 3、产品详情页：列表：根据产品id分页查询投资数据
     *
     * @param loanId
     * @param pageModel
     * @return
     */
    List<BidInfo> queryBidInfoPage(Integer loanId, PageModel pageModel);

    /**
     * 4、产品详情页：列表：根据产品id查询投资数据总数
     * @return
     * @param loanId
     */
    Long queryBidInfoCount(Integer loanId);

    /**
     * 5、投资：根据用户、产品、投资金额
     * 更新产品剩余可投金额
     * 更新账户余额
     * 判断更新产品状态
     * 追加投资记录
     * @param loanId
     * @param bidMoney
     * @param userId
     * @return
     */
    int invest(Integer loanId, Double bidMoney, Integer userId);

    // 5.1、模拟千人并发访问 同步处理
    int investConcurrency(Integer loanId, Double bidMoney, Integer userId);

    /**
     * 6、投资排行榜：查出所有投资记录
     * @return
     */
    List<BidInfo> queryAllBidInfo();

}
